/**
 * Created by ercha on 2016/1/2.
 * 存放一些插件的初始化函数
 */

//初始化 fileinput 控件
function initFileInput(param) {

    var i;
    if(!param.hasOwnProperty("ctrlName")){
        param.ctrlName = "file";
    }
    if(!param.hasOwnProperty("uploadUrl")){
        param.uploadUrl = "/upload";
    }
    if(!param.hasOwnProperty("maxFileCount")){
        param.maxFileCount = 5;
    }
    if(!param.hasOwnProperty("initialPreview")){
        param.initialPreview = [];
    } else{
        var tmp = [];
        for(i=0; i<param.initialPreview.length; ++i){
            console.info("initialPreview[i]: " + param.initialPreview[i]);
            if(!hasData(param.initialPreview[i])){
                continue;
            }
            tmp[i] = "<img src='" + getImgUrl(param.initialPreview[i], "s")+ "' class='file-preview-image' alt='暂无图片'>";
            console.info("tmp[i]: " + tmp[i]);
        }
        param.initialPreview = tmp;
    }

    var control = $('#' + param.ctrlName);

    control.fileinput({
        language: 'zh', //设置语言
        uploadUrl: param.uploadUrl, //上传的地址
        allowedFileExtensions : ['jpg', 'png'],//接收的文件后缀
        uploadExtraData: {
            inputName: param.ctrlName       //上传文件的控件的 name
        },
        showUpload: false, //是否显示上传按钮
        showCaption: false,//是否显示标题,即选择旁边的那一栏
        maxFileCount: param.maxFileCount,
        initialPreview: param.initialPreview
        //browseClass: "btn btn-primary", //按钮样式
        //previewFileIcon: "<i class='glyphicon glyphicon-king'></i>"   //预览的图标
    });

    //隐藏预览图的上传按钮
    control.on('fileimageloaded', function(event, previewId) {
        $('.kv-file-upload').each(function(){
            $(this).addClass("hidden");
        });
    });
}

//function initFileInput(ctrlName, uploadUrl, maxFileCount) {
//    var control = $('#' + ctrlName);
//
//    if(arguments.length < 2 ){
//        uploadUrl = "/upload";
//    }
//
//    if(arguments.length < 3){
//        maxFileCount = 5;
//    }
//
//    control.fileinput({
//        language: 'zh', //设置语言
//        uploadUrl: uploadUrl, //上传的地址
//        allowedFileExtensions : ['jpg', 'png'],//接收的文件后缀
//        uploadExtraData: {
//            inputName: ctrlName       //上传文件的控件的 name
//        },
//        showUpload: false, //是否显示上传按钮
//        showCaption: false,//是否显示标题,即选择旁边的那一栏
//        maxFileCount: maxFileCount
//        //browseClass: "btn btn-primary", //按钮样式
//        //previewFileIcon: "<i class='glyphicon glyphicon-king'></i>"   //预览的图标
//    });
//
//    //隐藏预览图的上传按钮
//    control.on('fileimageloaded', function(event, previewId) {
//        $('.kv-file-upload').each(function(){
//            $(this).addClass("hidden");
//        });
//    });
//}

//初始化单选按钮
function initSwitch(id, initStatus){
    var x = $('#' + id);
    if(arguments.length < 2){
        initStatus = false;
    }
    x.bootstrapSwitch({
        state: initStatus,
        onText: "是",
        offText: "否"
    });
    //x.bootstrapSwitch('setState', initStatus);

    //x.bootstrapSwitch()
}

//初始化日历控件，c 为类名
function initDatePiker(c){
    if(arguments <1){
        c = "datetimepicker";
    }
    $('.' + c).datetimepicker({
        format: 'yyyy/MM/dd',
        language:  'zh-CN',
        weekStart: 1,
        todayBtn:  true,
        autoclose: true,
        todayHighlight: 1,
        startView: 2,
        minView: 2,
        forceParse: 0
    });
}

/**
 *
 * @param r [jQuery 对象，保存加载内容的 div 块]
 * @param pathFormatter [路径格式化函数，参数为 page，代表要访问第几页]
 * @param dataFormatter [服务器返回 json 数据，转换成 html 的函数，参数为 data，是服务器返回的数据]
 * @param callbackFun  [处理完的回调函数]
 */
function initScroll(r, pathFormatter, dataFormatter, callbackFun){
    if(arguments.length < 4){
        callbackFun = function(elems){
            //console.info("elem: " + elems);
            //return elems;
        };
    }
    //清空原有的数据
    r.children().remove();
    r.data('infinitescroll', null);

    r.infinitescroll({
        navSelector: "#navigation", //导航的选择器，会被隐藏
        nextSelector: "#navigation a", //包含下一页链接的选择器
        itemSelector: ".post-masonry", //你将要取回的选项(内容块)
        maxPage: 0,
        state: {
            currPage: 0
        },
        debug: true, //启用调试信息
        animate: false, //当有新数据加载进来的时候，页面是否有动画效果，默认没有
        extraScrollPx: 10, //滚动条距离底部多少像素的时候开始加载，默认150
        bufferPx: 40, //载入信息的显示时间，时间越大，载入信息显示时间越短
        errorCallback: function() {
        }, //当出错的时候，比如404页面的时候执行的函数。事实上，没有数据时也会调用这个函数
        localMode: true, //是否允许载入具有相同函数的页面，默认为false
        path: pathFormatter,
        dataType: 'json',   //可以是json
        template: dataFormatter,
        loading: {
            msgText: "加载中...",
            finishedMsg: '没有新数据了...',
            selector: '.loading' // 显示loading信息的div
        }
    }, callbackFun
    );
}
